package org.example.ndarray.broadcast;

import ai.djl.ndarray.NDArray;
import ai.djl.ndarray.NDManager;

public class Example {
    public static void main(String[] args) {
        try (NDManager ndManager = NDManager.newBaseManager()) {
            /*
              在上面的章节，我们看到了基础运算符是如何在两个相同维度的NDArray中进行运算的
              在不确定的条件下，甚至不同维度下，我们一样可以通过引进广播机制进行基础运算
              通过将两个原NDArray复制、转换，变成两个维度相同的NDArray再计算
             */
            NDArray x = ndManager.arange(3f).reshape(3, 1);
            NDArray y = ndManager.arange(2f).reshape(1, 2);
            System.out.println("x = " + x);
            System.out.println("y = " + y);
            // 在进行加法基础运算之前，复制矩阵x的列并复制矩阵y的行
            System.out.println("x + y = " + x.add(y));
        }
    }
}
